home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume14 / mush6.0 / part01 next >
Encoding:
Internet Message Format  |  1988-04-12  |  58.2 KB

  1. Subject:  v14i033:  Mail User's Shell, version 6.0, Part01/14
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: island!argv@sun.com (Dan Heller)
  7. Posting-number: Volume 14, Issue 33
  8. Archive-name: mush6.0/part01
  9.  
  10. (This synopsis is from Rich $alz...)
  11. Mush is a mail program.  It helps you send, read, and generally
  12. manage electronic mail.  There's a Sun "tool" interface, a curses
  13. interface, and a shell-like, from which the name Mail User's Shell
  14. is derived.  It runs on a wide variety of Un-x machines, including
  15. BSD, USG, and Xenix machines.
  16.  
  17. Mush provides many of the features of UCB Mail (a/k/a mailx).
  18. Mush is only a user-agent; it's designed to work with Sendmail as
  19. the program to transport, but using other progams shouldn't be
  20. too much work.  There's a few notes about using MMDF, and I don't
  21. think a smail port would be too hard.  The old /bin/mail program
  22. can be used; check the config.h file.
  23.  
  24. In curses mode, it's pretty good at fooling an MH user, but it's
  25. more fun to be using the shell mode and have some C-shell hacker
  26. wander by...
  27.  
  28. #! /bin/sh
  29. # This is a shell archive.  Remove anything before this line, then unpack
  30. # it by saving it into a file and typing "sh file".  To overwrite existing
  31. # files, type "sh file -c".  You can also feed this as standard input via
  32. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  33. # will see the following message at the end:
  34. #        "End of archive 1 (of 14)."
  35. # Contents:  MANIFEST README README-6.0 bindings.h check.pr
  36. #   coffee.cup.pr config.h-dist cycle.pr dn.arrow.pr edit_menu.c
  37. #   envelope.pr glasses.pr mail.icon.1 mail.icon.2 makefile.bsd
  38. #   makefile.sun makefile.sys.v makefile.x286 makefile.x386 strings.h
  39. #   up.arrow.pr write.pr
  40. # Wrapped by rsalz@fig.bbn.com on Wed Apr 13 20:04:40 1988
  41. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  42. if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  43.   echo shar: Will not clobber existing file \"'MANIFEST'\"
  44. else
  45. echo shar: Extracting \"'MANIFEST'\" \(2005 characters\)
  46. sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
  47. X   File Name        Archive #    Description
  48. X-----------------------------------------------------------
  49. X MANIFEST                   1    This shipping list
  50. X README                     1    
  51. X README-6.0                 1    
  52. X aliases.c                  2    
  53. X bind.c                     5    
  54. X bindings.h                 1    
  55. X check.pr                   1    
  56. X cmd_help                   6    
  57. X coffee.cup.pr              1    
  58. X commands.c                 8    
  59. X config.h-dist              1    
  60. X curs_io.c                  3    
  61. X curses.c                   7    
  62. X cycle.pr                   1    
  63. X dates.c                    3    
  64. X dn.arrow.pr                1    
  65. X doproc.c                   5    
  66. X edit_menu.c                1    
  67. X envelope.pr                1    
  68. X execute.c                  3    
  69. X expr.c                     2    
  70. X file.c                     3    
  71. X fkeys.c                    6    
  72. X folders.c                  2    
  73. X glasses.pr                 1    
  74. X hdr_panel.c                2    
  75. X hdr_procs.c                2    
  76. X hdrs.c                    10    
  77. X help.c                     4    
  78. X init.c                     4    
  79. X loop.c                     9    
  80. X mail.c                    14    
  81. X mail.icon.1                1    
  82. X mail.icon.2                1    
  83. X main.c                     5    
  84. X main_panel.c               3    
  85. X makefile.bsd               1    
  86. X makefile.sun               1    
  87. X makefile.sys.v             1    
  88. X makefile.x286              1    
  89. X makefile.x386              1    
  90. X misc.c                     4    
  91. X msgs.c                     7    
  92. X mush.1.a                  11    
  93. X mush.1.b                  12    
  94. X mush.1.c                  13    
  95. X mush.h                     8    
  96. X pick.c                     4    
  97. X print.c                    2    
  98. X rite.c                     2    
  99. X select.c                   6    
  100. X setopts.c                  4    
  101. X signals.c                  3    
  102. X sort.c                     2    
  103. X strings.c                  2    
  104. X strings.h                  1    
  105. X tool.c                     2    
  106. X tool_help                  9    
  107. X up.arrow.pr                1    
  108. X viewopts.c                 5    
  109. X write.pr                   1    
  110. END_OF_FILE
  111. if test 2005 -ne `wc -c <'MANIFEST'`; then
  112.     echo shar: \"'MANIFEST'\" unpacked with wrong size!
  113. fi
  114. # end of 'MANIFEST'
  115. fi
  116. if test -f 'README' -a "${1}" != "-c" ; then 
  117.   echo shar: Will not clobber existing file \"'README'\"
  118. else
  119. echo shar: Extracting \"'README'\" \(10665 characters\)
  120. sed "s/^X//" >'README' <<'END_OF_FILE'
  121. X/* @(#)README    2.5    (c) copyright 10/24/87    (Dan Heller) */
  122. X
  123. Author:
  124. X    Dan Heller
  125. X
  126. Network address:
  127. X    island!argv@sun.com        dheller@ucbcory.berkeley.edu
  128. X    argv@garp.mit.edu        argv@spam.istc.sri.com
  129. X
  130. When sending mail, mail to the addresses in the order given.
  131. X
  132. Contained is the source for "Mail User's Shell" (MUSH), an interface
  133. for the sending, viewing and managing of electronic mail on UNIX(tm) systems.
  134. Redistribution of this code is permitted as long as all copyright notices
  135. remain intact and all other identifying notices remain in the code and
  136. in the binary.  This includes message headers on outgoing mail and
  137. the startup message.  Failing to adhere to this reflects on your poor
  138. sense of fair play and bad attitude -- you will probably fail in your
  139. social and business affairs with little honor and respect from your peers.
  140. X
  141. With that out of the way...
  142. X
  143. To install Mush on your system, find the file that most closely resembles
  144. X"config.h" (probably "config.h-dist") COPY it to config.h, edit it to reflect
  145. the system dependencines described there.  Decide which makefile applies
  146. to you.  makefile.sun applies only to suns and creates a binary called
  147. X"mush."  If the binary ends in "tool", then the graphics (tool) mode will
  148. be used by default on invocation. Otherwise, you must specify -t for toolmode
  149. on sun workstations.  The SUNTOOL define must be set in the makefile.sun
  150. in order to compile the suntools version.  You don't need to be running
  151. sunview; old sunwindows (2.0+) may be used.
  152. X
  153. If you're on a BSD system and it's not a sun workstation, or if you're on a
  154. sun workstation and know that you're not going to use the suntools mode then
  155. you should use makefile.bsd so that SUNTOOL won't be defined and unneccessary
  156. files not be compiled so the binary will be made smaller.
  157. X
  158. The files makefile.x286 and makefile.x386 were created especially for
  159. xenix machines.  Depending on the configuration of your particular xenix box,
  160. some tweeking of the makefile flags may be necessary.  If your xenix
  161. release is 2.2 or higher then you must define USG. Libraries to use should
  162. be -ltinfo *not* -lcurses -ltermlib.  This is because the curses package
  163. uses termio instead of the sgtty data structure.  If you want to use termio
  164. anyway, even if you're on an older xenix system (that supports termio),
  165. then you may define USG anyway.
  166. X
  167. makefile.sys.v is for unix machines that are not running any flavor of
  168. BSD and probably running a system-v flavor of unix -- this defines USG
  169. so that termio will be used.  Some older unix systems have SYSV defined
  170. in /usr/include/curses.h (which is used if you are compiling with CURSES)
  171. In most cases, these only generate annoying warning messages and does not
  172. effect the compilation of the code.
  173. X
  174. Mush was designed to use sendmail as the Mail Transport Agent. However,
  175. other MTA's will work.  The MTA you use should be defined in config.h
  176. under the MAIL_DELIVERY macro define. By default, /usr/lib/sendmail -i
  177. is used -- the option, -i, tells sendmail not to accept "." on a line
  178. by itself as an end-of-file marker.
  179. X
  180. If you do not use sendmail, then you should be familiar enough with your
  181. MTA to know whether it uses "From " to separate messages.  Some mailers
  182. use special control characters to separate messages in a folder.  MMDF may
  183. use "^A^A^A^A" or older delivermail versions would use "^C".  Whatever
  184. your system uses, if it is NOT "From " (just the first 5 chars on a line
  185. matching "From "), then this string should be defined in config.h under
  186. MSG_SEPARATOR.
  187. X
  188. Even if you do use the "From " construct to separate messages, some people
  189. complain about messages which contain lines that start with "From ", but
  190. are not message separators.  Few MTA's allow lines beginning with "From "
  191. to be a part of a message body and modify the line by preceding it with a
  192. X'>' resulting in ">From ..."   However, there are some mailers that don't
  193. do this -- What mush does is look for a pattern of
  194. From <string> <date format>
  195. The string is usually the return address of the sender.  The date format
  196. is supposed to be in ctime(3) format.  Even still, some MTA's don't conform
  197. completely to this standard and vary slightly in implementation.  The function
  198. X"getmail()" (which reads in messages) contains a scanf which looks for this
  199. format to verify that this is indeed a new message we're reading.  If you
  200. install mush and find that you are entering a shell, but mush indicates there
  201. are no messages in the folder, it could be that you have a weird "From "
  202. line format and the scanf needs to be modified or even removed.
  203. X
  204. Some MTA's, especially older ones like /bin/mail or execmail (xenix), do
  205. not conform to RFC822 and provide the required headers: From: and Date:.
  206. To remedy either #define OLD_MAILER in config.h or add the -D option
  207. OLD_MAILER in the appropriate makefile: -DOLD_MAILER as part of the CFLAGS
  208. variable.
  209. X
  210. If your mailer does NOT have a verbose option, then you should not have
  211. VERBOSE_ARG defined.  Otherwise, define it to be whatever the
  212. verbose argument is for your mailer.
  213. X
  214. Sendmail uses the -m argument to say, "metoo" -- when sending to mailing
  215. lists, normally sendmail will send mail to mailing lists, but if you're
  216. in that list, you are excluded from getting your own mail.  However, if
  217. you have the variable metoo set with your variables, then the METOO argument
  218. is passed to sendmail to say, "I know I'm on this mailing list, but send
  219. me a copy of my message even tho I sent it."  For sendmail, this is -m.
  220. If your mailer uses something else, then define METOO_ARG in the config file.
  221. If you don't have it (sys-v), then do not define this macro.
  222. X
  223. VPRINTF should be defined if your system has the vprintf functions. You
  224. X*have* these functions if 1) you are running system V, 2) xenix, or 3) you
  225. are running a Sun release on or later than version 3.0.  If you are still not
  226. sure, try the following command from your shell:
  227. X
  228. X% ar t /lib/libc.a | grep vprintf
  229. X
  230. If you have it, you'll probably get something like
  231. vprintf.o
  232. vsprintf.o
  233. as output.  If you don't have it, you won't have any output.  If your
  234. main C-libraries are not in /lib/libc.a, then find where they are and
  235. try the same command using that file.
  236. X
  237. If you have REGCMP, this should be defined so that you will use the
  238. routines regcmp() and regex() as the regular expression composer/parser.
  239. If you don't have REGCMP defined, then the routines re_comp() and re_exec()
  240. are used (this is the default).  Note that some systems do not have either
  241. set of routines in the default libraries.  You must find the library to use
  242. and add it to the list of libraries to use.  If this is the case, your link
  243. will fail with the errors that regex and re_comp are undefined functions.
  244. Read your man page for regex(3) to find where to locate those libraries.
  245. X
  246. A default mailrc should be installed for new users.  UCB mail's default
  247. Mailrc works but no mailrc works also. The location of the default
  248. file should be defined in config.h.  To have no default mailrc, set the
  249. default to /dev/null.  For sun systems, the default .mailrc (/usr/lib/Mailrc)
  250. does not work very well because sun's Mail is not standard /usr/ucb/Mail.
  251. For this reason, sun has not changed the default mailrc file and still
  252. resides in /usr/lib/Mail.rc (note this has the "." whereas the other file
  253. does not).  The default config.h-dist reflects this.
  254. X
  255. The help files should be placed somewhere which is readable and accessible
  256. by all. Failing to do so removes virtually the entire help facility's
  257. ability to help anyone.  There is a help file for command help ( `command -?'),
  258. and the other is for the graphics mode (Sun workstations only).  You should
  259. define where you want these files in "config.h" so at runtime, they can be
  260. accessed without error.
  261. X
  262. The default settings in config.h may be documented as the default values
  263. in the help files.  Be aware that changing some default values may cause
  264. inconsistencies with the help files and documentation.
  265. X
  266. If your system has *sys_siglist[], skip this paragraph.  If it doesn't,
  267. or if your system has a non-standard list, you should edit signals.c at
  268. the top and build the table manually from the one given for System-V people.
  269. Note that most system-v unix systems need not change anything as long as
  270. SYSV is defined.
  271. X
  272. Maintenance:
  273. X
  274. If you want to use dbx or any other debugger, the undocumented flag, -e
  275. should be used as command line argument when you run the binary under
  276. the debugger.  What this flag does is prevents your echo from being
  277. turned off and leaving cbreak on, thus, keeping your tty in a sane state.
  278. Beware of curses mode tho, since it must be turned off for that -- e.g.
  279. the -e flag is overridden if you enter curses mode.  The -e flag can be
  280. used in general usage anyway, but there's no difference known to the user
  281. except for the fact that you can not type control characters.
  282. X
  283. If you have memory allocation checking and validation (sun 3.0+ ?) then
  284. define M_DEBUG in the makefile (main.c) and add the library
  285. X/usr/lib/debug/malloc.o to the library list. Do this only if you are
  286. find bugs in the program and suspect memory allocation errors. main.c
  287. has the code which sets the debugging level according to the value of
  288. an environment variable.  Because malloc-debugging is so cpu intensive,
  289. the sunwindows program will get a SIGXCPU (cpu time limit exceeded)
  290. because of the large amount of opening and closing large pixrects and
  291. devices.  For this reason, SIGXPCPU is is caught in main.c.
  292. X
  293. If you ever get "Message N has bad date: <date string>" then note
  294. the FORMAT of that date and edit dates.c.  There are a number of
  295. X"sscanf"s which you can see match known date formats.  Use them as
  296. examples and insert the new date format you have.
  297. X
  298. If you ever add new variables, be sure to add them in viewopts.c and the
  299. man page.
  300. X
  301. If Mush ever coredumps and you are suspicious about whether or not
  302. your folder (or spool directory) was removed.  Or, if you were editing
  303. a letter, you should check for the files .mushXXXXXX and .edXXXXXXX.
  304. Mush won't die without telling you that it's dying and it will ask if you
  305. want to save the .mush????? file and if you actually want it to dump core.
  306. Note that if you run mush from .suntools and there is a core dump, it
  307. probably wants to do some IO with the console and may hang (not exit)
  308. because it doesn't know it can't talk to you.
  309. X
  310. Last attempted, mush passed lint with a small number of errors indicating
  311. that fflush, fclose and other similar functions returned values which
  312. were always ignored.  Sorry.  I did not attempt lint on the suntools mode.
  313. Curses doesn't lint very well, but even when you lint mush with CURSES
  314. defined, it only complains about the unused curses globals in curses.h.
  315. END_OF_FILE
  316. if test 10665 -ne `wc -c <'README'`; then
  317.     echo shar: \"'README'\" unpacked with wrong size!
  318. fi
  319. # end of 'README'
  320. fi
  321. if test -f 'README-6.0' -a "${1}" != "-c" ; then 
  322.   echo shar: Will not clobber existing file \"'README-6.0'\"
  323. else
  324. echo shar: Extracting \"'README-6.0'\" \(16732 characters\)
  325. sed "s/^X//" >'README-6.0' <<'END_OF_FILE'
  326. This is the README for release 6.0 of mush.  Note that the orginal README
  327. has changed as well, so it should be read again.  It contains important
  328. information for installing mush on your system.
  329. X
  330. With this distribution, there is a file called Mailrc which can be
  331. used as the "default" mailrc (see config.h-dist).  This file will set
  332. variables and command line aliases to make mush look as much like ucb Mail
  333. as it possibly can.
  334. X
  335. New makefile && compiler flags:
  336. X    System V machines that aren't XENIX should use the makefile.sys.v makefile.
  337. X    The old makefile.sys.v has been removed. System-V machines
  338. X    that aren't xenix may note -DUSG in the makefile.  USG is defined in
  339. X    curses.h but is required to be in the makefile if compiling without the
  340. X    curses libraries.  It should be in the makefile anyway so you never have
  341. X    to worry about it. Xenix machines should use makefile.x286 or makefile.x386
  342. X    USG should probably be defined on your xenix system unless you are running
  343. X    a _very_ old version of xenix.  I don't know how old it would be, but
  344. X    try compiling mush with USG first -- if that fails, then undefine it.
  345. X
  346. X    Some systems have regcmp/regex as their regular expression matching
  347. X    routines while others have re_comp/re_exec -- If you have regcmp,
  348. X    then you must have -DREGCMP in the makefile you're using. If you have
  349. X    both sets of routines, take a pick.  Note that some systems do not
  350. X    have either set of routines in the default libraries.  You must find
  351. X    the library to use and add it to the list of libraries to use.  If this
  352. X    is the case, your link will fail with the errors that regex and re_comp
  353. X    are undefined functions.  Read your man page for regex(3) to find where
  354. X    to locate those libraries.
  355. X
  356. X    Machines that use mail transfer agents that *do not* use a colon-less
  357. X    "From " line as a message separator should #define in config.h the string
  358. X    MSG_SEPARATOR.  Since this string is usually control characters, you
  359. X    need to specify actual ascii values for those characters.  Users of MMDF,
  360. X    for example, may use "\001\001\001\001" since some mmdf versions use four
  361. X    control-A's to separate messages.  This message separator assumes that
  362. X    there is a carriage return at the end of the string.  Systems that use
  363. X    sendmail need not concern themselves with this define.
  364. X
  365. X    Some mailers (not RFC822 compatible, like execmail and older binmail's)
  366. X    do not accept commas between addresses on outgoing mail.  Such mailers
  367. X    also tend not to add the From: field and Date: field, which are headers
  368. X    required to be compatible with RFC822.  This does not apply to BSD systems
  369. X    or systems which run sendmail.  If this applies to your system, you
  370. X    should define OLD_MAILER in config.h as "#define OLD_MAILER" or in the
  371. X    makefile in addition to the CFLAGS definition: -DOLD_MAILER.  This does not
  372. X    affect the user interface at all; mush will still enforce commas between
  373. X    addresses.  However, addresses given on the command line to the mailer
  374. X    will have commas stripped out if OLD_MAIL is defined in the makefile or
  375. X    config.h.
  376. X
  377. System V:
  378. X    New functions:
  379. X    lock_file() /* returns -1 if can't lock */
  380. X    close_lock() /* unlocks and calls fclose */
  381. X    These functions also support BSD, xenix and sys-v.  These are provided
  382. X    as locking mechanisms for all systems -- ifdef's decide how to lock.
  383. X
  384. X    Support for termio functionality.  Macros in mush.h have been modified
  385. X    to provide for echo/cbreak modes to depending on the compiler flags:
  386. X    CURSES and SYSV/BSD/USG.  There are 6 different possible cases here.
  387. X
  388. X    Problem with xenix/sys-v getting the "name" from a "From:" field since
  389. X    char pointer and char arrays are different sizes.  (hdrs.c, compose_hdr())
  390. X
  391. X    sendmail mail now forks off and returns you to a mush prompt so you
  392. X    don't have to wait for the mail to be delivered.  This is true for
  393. X    both xenix and sys-v.
  394. X
  395. X    terminfo is now supported.
  396. X
  397. Command line arguments:
  398. X    -u [user]
  399. X    /usr/spool/mail/user is used as the current folder. If "user" isn't
  400. X    specified, /usr/spool/mail/root is used.
  401. X
  402. X    -T timeout implies -t (for tooldmoe), so -t is not required if -T is given.
  403. X
  404. X    If -r (readonly) flag is given on the command line or to the folder/update
  405. X    commands, the folder (or spoolfile) is opened readonly and the mail is
  406. X    *not* copied into a temporary buffer.  This speeds up IO dramatically in
  407. X    systems with slow IO or disk drives (typically, xenix/sys-v).
  408. X
  409. X    -H implies -r, so -r is not necessary.  If mush is started just to read
  410. X    the headers of your mail, then forcing read only improves performance.
  411. X
  412. X    a folder as well as an address can be given on the command line. Thus,
  413. X    % mush -f foldername address-list
  414. X    will first interactively mail to the address-list and upon return read
  415. X    in the folder "foldername".
  416. X
  417. Misc:
  418. X    There is now an internal pager which is used if the user has no
  419. X    "pager" variable set and no environment PAGER variable.  This pager
  420. X    is very simple and understands <space> for next $crt lines, \n does
  421. X    just the next line, ^D does the next half $crt lines, and q,Q quits.
  422. X    The user can "set pager" (to null, effectively) or to the string "internal"
  423. X    to always get the internal pager.  The DEF_PAGER macro in config.h can
  424. X    be set to "internal" also. (do_pager() misc.c)
  425. X
  426. X    Mush now understands 'well-formed' addresses.  A well-formed address
  427. X    consists of tokens of the form:
  428. X
  429. X    $path
  430. X    $path (Name or comment here)
  431. X    Name or comment <$path>
  432. X    "Name or comment" $path
  433. X
  434. X    See the man page for Extensive examples and rules for what formats
  435. X    are legal, but may not be supported.
  436. X
  437. X    To: lines which are too long from incoming mail are truncated. Previously,
  438. X    a segmentation fault would result -- replies to messages containing long
  439. X    To: lines will attempt to chop off the list between addresses.
  440. X
  441. X    Add right justification in hdr_format format string field similar
  442. X    to printf style formatting.  Example:
  443. X    set hdr_format = '%-25n %7d (%l) "%s"'
  444. X    will produce a header format such that the name of the author is
  445. X    right justified 25 positions, 7 chars of the date is printed, the
  446. X    number of lines in the message and the subject surrounded by quotes.
  447. X    Also subwidths are allowed using the same dot notation as provided by
  448. X    printf.  (hdrs.c)
  449. X
  450. X    The '%S' switch for message status has been removed and the status of
  451. X    a message is always at the beginning of the message header line
  452. X    by default along with the msg number and the '>' if it's the current msg.
  453. X    There is a new status flag for replied to messages.  If a message has
  454. X    been replied to, then a 'r' is placed in the header string just after
  455. X    the first status flag.. Thus, the header:
  456. X      4 >*r Dan Heller <island!argv@sun.com> ....
  457. X    means that message 4 is the current message, it has been deleted,
  458. X    and has been replied to...
  459. X
  460. X    In the hdr_format string, the date of a message can be printed
  461. X    using the same formatting characters as the prompt uses.  %T is
  462. X    the time, etc... Note that %d still prints the whole date, but
  463. X    the new formatting characters allow parts of the date to be printed.
  464. X
  465. X    New option for mail:
  466. X    mail -s [subject]
  467. X    With no subject specified, -s forces a prompt for the subject
  468. X    header even if the variable "ask" is not set.  If a subject is
  469. X    specified, then the subject is set to that string explicitly.
  470. X    This allows the reply command to change the subject or to prompt
  471. X    to change the subject.
  472. X
  473. X    Saveopts now warns if file already exists; you must confirm overwrite.
  474. X
  475. X    Control characters typed are now understood and can be entered into
  476. X    letters etc... To enter a special control character such as your backspace
  477. X    character or kill line character use the backslash.  In the toolmode,
  478. X    use your literal next character (^V in most cases).
  479. X
  480. X    "varargs" now used in print.c to provide support for machine that
  481. X    do not stack arguments compatible with vax/68000/etc... These machines
  482. X    are Pyramids, Sun4's and more... (print.c)
  483. X
  484. X    The temporary file used to type in messages is now _closed_ before
  485. X    invoking an editor.  This is for gnuemacs users or users of other
  486. X    editors which insist on no other references to that file be open.
  487. X
  488. X    Using job control (^Z/fg) which in the headers portion of a message
  489. X    (e.g. "To: ") would cause mush to be confused about what state the program
  490. X    is in and would inadvertently show a prompt (user's $prompt) even
  491. X    tho it was executing the right code (prompting for the To: line). This
  492. X    has been fixed so that the prompt isn't given, but the To: line will
  493. X    not be reprompted.
  494. X
  495. X    Mailing to users from the command line and ^C-ing while in the To: or
  496. X    Subject: prompt would just report an interrupt and not abort the message;
  497. X    it now exits.(hdrs.c, set_header())
  498. X
  499. X    If the user's home dir isn't writeable, or permissions changed during
  500. X    runtime, mush changes to ALTERNATE_HOME and tries again rather than just
  501. X    returning an error message.  If the alternate home also fails, an error
  502. X    is printed and the function aborted.
  503. X    (main.c, mail.c, start_file())
  504. X
  505. X    When updating a folder, ignored headers are now copied back regardless
  506. X    of the variable, "alwaysignore". This is necessary because the user may
  507. X    ignore headers that are required to be read when reading in a folder.
  508. X    (msgs.c, copy_msg())
  509. X
  510. X    pick has a new option to pick from an arbitrary header.
  511. X    pick -h return-path ucbvax
  512. X    searches for the string "ucbvax" in the Return-Path: header of all
  513. X    messages.
  514. X
  515. New Variables:
  516. X    autosign2
  517. X    Use an alternate signature for specific users.  Format for string:
  518. X    set autosign2 = "address, address, ... : <signature>"
  519. X    where "address" is a legal address (or alias) and signature is that
  520. X    described by "autosign".  the colon separates the list from the signature.
  521. X    If the colon is missing or if the list is null, the signature is used
  522. X    and no checks are made against the recipient list.  Otherwise, each
  523. X    address on the recipient list of outgoing mail must also exist in
  524. X    the autosign2 list.  Otherwise, the signature in autosign is used.
  525. X    If autosign is not set, the autosigning isn't done unless ~S is used.
  526. X
  527. X    show_hdrs (String)
  528. X    Set to a list (space and/or comma separated) of headers which are to
  529. X    be the only headers displayed when viewing a message.  This disables
  530. X    the headers supressed by the ignore command. Example:
  531. X    set show_hdrs = "from date subject to cc"
  532. X    will only display the headers,
  533. X    From: Date: Subject: To: Cc:
  534. X    in their entirety.
  535. X
  536. X    mil_time -- if set, 24 hour military time format is used in message
  537. X    dates or if the time is used in the prompt. Otherwise, 12-hour with
  538. X    an added "am/pm" is displayed.
  539. X
  540. X    The variable "no_expand" prevents expansion of mush addresses in
  541. X    outgoing mail.  The To: line will read the same as it was typed --
  542. X    this hides the complete list of addresses of everyone on the list.
  543. X
  544. X    A new variable called "wrap" has been added.  When the last message is
  545. X    deleted, the next "current" message is usually the next undeleted message.
  546. X    If wrap is not set, then the curent message remains at the end of the
  547. X    list of messages.  Similarly, if "next" ('n', CR) is specified, wrapping
  548. X    to the beginning of the list only happens if the variable is set.
  549. X
  550. X    The variable fixaddr has been removed and the variable auto_route has
  551. X    been modified to route uucp mail thru the host of the author of the
  552. X    message being replied to as well as removing redundant hostnames such as:
  553. X    host1!host2!host1!user -> host1!user
  554. X
  555. X    "cdpath" added.  This is like csh's but note you can't use ()'s to
  556. X    set the path -- use quotes: (").  When the cd command is issued,
  557. X    if there is no cdpath set, then the directory mentioned is cd'ed to.
  558. X    If there is a cdpath and the pathname given is not a full pathname,
  559. X    then each element in the cdpath is searched for the directory specified.
  560. X    Recommend putting "." first in cdpath if one is used.
  561. X
  562. X    "sendmail" -- if set, this program is used instead of the default Mail
  563. X    Transfer Agent defined as MAIL_DELIVERY in config.h ... If used, the
  564. X    default flags -i and -m are not passed along to the MTA, so any flags
  565. X    which are necessary for the MTA should be included in the sendmail
  566. X    variable's string value.
  567. X
  568. X    pre_indent_str, post_indent_str (string)
  569. X    These strings have the same properties as "hdr_format". The
  570. X    pre_indent_str string will precede the body of text interpolated into
  571. X    the message buffer and the post_indent_str will succeed the text. See
  572. X    the man page for extensive details.
  573. X
  574. X    in_reply_to (string)
  575. X    set to a string interpreted the same as "hdr_format" -- when replying
  576. X    to mail, an additionaly outgoing message header In-Reply-To: is added.
  577. X    See man page for more extensive details.
  578. X
  579. X    "ask" is a boolean which is for compatibility with ucb-Mail. If set,
  580. X    you will be prompted for a subject.  otherwise, no subject prompting
  581. X    is done.
  582. X
  583. Curses:
  584. X    In curses mode, line-mode-escape commands which contain pipes,
  585. X    :pick -s pattern | save folder
  586. X    would segmentation fault on the command that follows such commands.
  587. X    The next command to execute thinks that piping is on causing a segmentation
  588. X    fault trying to reference the non-existent message list.  This was fixed by
  589. X    resetting the DO_PIPE/IS_PIPE flags to off in the cmd_line() routine.
  590. X    (misc.c, cmd_line())
  591. X
  592. X    Quitting now goes to the bottom of the screen rather than moving
  593. X    down one line [as well as other quit-related update bugs]
  594. X    (curses.c, case C_QUIT:)
  595. X
  596. X    Updating (^U) now redraws the screen right if you weren't on the
  597. X    first "screenful" of messages. (curses.c, case C_UPDATE)
  598. X
  599. X    's' (save) command wasn't saving to mbox on no input (CR).  It tried
  600. X    to save to "" which maps to "." which is a directory.  (curses.c)
  601. X
  602. X    The bug causing the GOTO command to inifinite loop if there were 0
  603. X    or 1 messages in the folder if invoked by selecting a digit key has
  604. X    been fixed.  The manual entry for how the goto command works has a
  605. X    more detailed description and gives an example for effective usage.
  606. X    Due to its versatility, there can be some screen updating problems
  607. X    if the user specifies a message list which contains a command that
  608. X    produces any "stdout" type output.  Normally, this shouldn't happen,
  609. X    because most commands which are used to "search for messages" will
  610. X    not output anything if they are being "piped".  If the user wishes
  611. X    to specify a command that produces output (like echo) then the screen
  612. X    will not be updated correctly (use ^L to redraw).  See the updated
  613. X    man page entry for deatils on the above.
  614. X
  615. X    The bind command doesn't require the use of \Cc to represent control
  616. X    characters anymore.  The old interface is still supported -- in fact
  617. X    control characters that are typed are converted to this ascii format
  618. X    for purposes of displaying current bindings and to allow .mushrc files
  619. X    to specify bindings in ascii format.  However, control characters may
  620. X    be typed as is.  The spacebar may be bound to a command if it is given
  621. X    in the .mushrc file or on a Mush command line.  See the manual.
  622. X
  623. Tool mode:
  624. X    Trying to start tool in icon mode sometimes aborts with segementation
  625. X    fault.  This is caused by the window size being 0 and the message
  626. X    trying to be written to the empty window.  The routine which tries to
  627. X    output each line of the message to the window is recursive. If the line
  628. X    wraps because of the window's width being less than the length of the
  629. X    line, Addstr() finds the position in the line which wraps and calls
  630. X    itself recursively passing the remainder of the string.  The size of
  631. X    0 means that Addstr is calling itself at the the beginning of the string
  632. X    all the time.  The fix is in copy_msg where it checks to see if the
  633. X    window is large enough to attempt printing the message (msgs.c, copy_msg())
  634. X
  635. X    When changing folders, if there are no messages in the new folder,
  636. X    the last read message was still displayed leaving the user somewhat
  637. X    confused.  If there are no messages, the window is cleared. (folders.c)
  638. X
  639. X    To be consistent with the other two interfaces, both delete and
  640. X    backspace will backspace if in type-in mode. (rite.c)
  641. X
  642. X    When returning from using the editor, the window displaying the letter
  643. X    being composed would contain what the letter looked like before the editor
  644. X    was invoked.  This has been fixed by printing out the last part of the
  645. X    letter up to the size of the window available.
  646. END_OF_FILE
  647. if test 16732 -ne `wc -c <'README-6.0'`; then
  648.     echo shar: \"'README-6.0'\" unpacked with wrong size!
  649. fi
  650. # end of 'README-6.0'
  651. fi
  652. if test -f 'bindings.h' -a "${1}" != "-c" ; then 
  653.   echo shar: Will not clobber existing file \"'bindings.h'\"
  654. else
  655. echo shar: Extracting \"'bindings.h'\" \(1492 characters\)
  656. sed "s/^X//" >'bindings.h' <<'END_OF_FILE'
  657. X/* bindings.h  -- command bindings */
  658. X
  659. X/* to see if a key sequece matches, prefixes or misses a set binding */
  660. X#define NO_MATCH    0
  661. X#define MATCH        1
  662. X#define A_PREFIX_B    2
  663. X#define B_PREFIX_A    3
  664. X
  665. X#define NULL_MAP    (struct cmd_map *)0
  666. X#define C_NULL        0
  667. X#define C_GOTO_MSG    1
  668. X#define C_WRITE_MSG    2
  669. X#define C_WRITE_LIST    3
  670. X#define C_SAVE_MSG    4
  671. X#define C_SAVE_LIST    5
  672. X#define C_COPY_MSG    6
  673. X#define C_COPY_LIST    7
  674. X#define C_DELETE_MSG    8
  675. X#define C_DELETE_LIST    9
  676. X#define C_UNDEL_MSG    10
  677. X#define C_UNDEL_LIST    11
  678. X#define C_REVERSE    12
  679. X#define C_REDRAW    13
  680. X#define C_NEXT_MSG    14
  681. X#define C_PREV_MSG    15
  682. X#define C_FIRST_MSG    16
  683. X#define C_LAST_MSG    17
  684. X#define C_TOP_PAGE    18
  685. X#define C_BOTTOM_PAGE    19
  686. X#define C_NEXT_SCREEN    20
  687. X#define C_PREV_SCREEN    21
  688. X#define C_SHOW_HDR    22
  689. X#define C_SOURCE    23
  690. X#define C_SAVEOPTS    24
  691. X#define C_NEXT_SEARCH    25
  692. X#define C_PREV_SEARCH    26
  693. X#define C_CONT_SEARCH    27
  694. X#define C_PRESERVE    28
  695. X#define C_SORT        29
  696. X#define C_REV_SORT    30
  697. X#define C_QUIT_HARD    31
  698. X#define C_QUIT        32
  699. X#define C_EXIT_HARD    33
  700. X#define C_EXIT        34
  701. X#define C_UPDATE    35
  702. X#define C_FOLDER    36
  703. X#define C_SHELL_ESC    37
  704. X#define C_CURSES_ESC    38
  705. X#define C_PRINT_MSG    39
  706. X#define C_CHDIR        40
  707. X#define C_VAR_SET    41
  708. X#define C_IGNORE    42
  709. X#define C_ALIAS        43
  710. X#define C_OWN_HDR    44
  711. X#define C_VERSION    45
  712. X#define C_MAIL_FLAGS    46
  713. X#define C_MAIL        47
  714. X#define C_REPLY_SENDER    48
  715. X#define C_REPLY_ALL    49
  716. X#define C_DISPLAY_MSG    50
  717. X#define C_TOP_MSG    51
  718. X#define C_DISPLAY_NEXT    52
  719. X#define C_BIND        53
  720. X#define C_UNBIND    54
  721. X#define C_HELP        55 /* THIS MUST BE THE LAST ITEM */
  722. END_OF_FILE
  723. if test 1492 -ne `wc -c <'bindings.h'`; then
  724.     echo shar: \"'bindings.h'\" unpacked with wrong size!
  725. fi
  726. # end of 'bindings.h'
  727. fi
  728. if test -f 'check.pr' -a "${1}" != "-c" ; then 
  729.   echo shar: Will not clobber existing file \"'check.pr'\"
  730. else
  731. echo shar: Extracting \"'check.pr'\" \(240 characters\)
  732. sed "s/^X//" >'check.pr' <<'END_OF_FILE'
  733. X/* "@(#)check.pr    2.2    9/3/86 (Dan Heller)"; */
  734. X
  735. X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
  736. X */
  737. X    0x0000,0x0000,0x0001,0x0003,0x0007,0x000E,0x001C,0x0038,
  738. X    0xC070,0xE0E0,0x71C0,0x3B80,0x1F00,0x0E00,0x0400,0x0000
  739. END_OF_FILE
  740. if test 240 -ne `wc -c <'check.pr'`; then
  741.     echo shar: \"'check.pr'\" unpacked with wrong size!
  742. fi
  743. # end of 'check.pr'
  744. fi
  745. if test -f 'coffee.cup.pr' -a "${1}" != "-c" ; then 
  746.   echo shar: Will not clobber existing file \"'coffee.cup.pr'\"
  747. else
  748. echo shar: Extracting \"'coffee.cup.pr'\" \(193 characters\)
  749. sed "s/^X//" >'coffee.cup.pr' <<'END_OF_FILE'
  750. X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
  751. X */
  752. X    0x0200,0x0100,0x0600,0x0800,0x0600,0x0100,0xFFF8,0x800C,
  753. X    0x800A,0x4012,0x401C,0x2020,0x9048,0x7FF0,0x3FE0,0x0000
  754. END_OF_FILE
  755. if test 193 -ne `wc -c <'coffee.cup.pr'`; then
  756.     echo shar: \"'coffee.cup.pr'\" unpacked with wrong size!
  757. fi
  758. # end of 'coffee.cup.pr'
  759. fi
  760. if test -f 'config.h-dist' -a "${1}" != "-c" ; then 
  761.   echo shar: Will not clobber existing file \"'config.h-dist'\"
  762. else
  763. echo shar: Extracting \"'config.h-dist'\" \(2000 characters\)
  764. sed "s/^X//" >'config.h-dist' <<'END_OF_FILE'
  765. X/* config.h 1.1    (c) copyright 1986 (Dan Heller) */
  766. X
  767. X#define MAILRC        ".mushrc"
  768. X#define ALTERNATE_RC    ".mailrc"
  769. X#define LIBDIR        "/usr/lib
  770. X#define DEFAULT_RC    LIBDIR/Mail.rc"
  771. X#define COMMAND_HELP    LIBDIR/cmd_help"
  772. X#ifdef SUNTOOL
  773. X#    define TOOL_HELP    LIBDIR/tool_help"
  774. X#endif /* SUNTOOL */
  775. X#define ALTERNATE_HOME    "/tmp"       /* Path must be read/write to EVERYONE */
  776. X#define EDFILE      ".edXXXXXX"  /* file/pathname added to user's "home" */
  777. X
  778. X/* mail delivery system */
  779. X#define MAIL_DELIVERY    "/usr/lib/sendmail -i"
  780. X#define VERBOSE_ARG    "-v"    /* undef if none exists */
  781. X#define METOO_ARG    "-m"    /* man sendmail for more info. */
  782. X
  783. X#define    MAXMSGS        1000    /* maximum number of messages we can read */
  784. X#ifndef MAXPATHLEN
  785. X#define MAXPATHLEN 256
  786. X#endif
  787. X
  788. X#define VPRINTF        /* If your system supports the vprintf() functions,
  789. X             * True for sys-v and later sun versions (3.0+ ?).
  790. X             */
  791. X
  792. X/* If your mail transfer agent uses something *besides* "From " to separate
  793. X * adjacent messages in a folder, define MSG_SEPARATOR to be this string.
  794. X * If that string is 4 ^A's, then the string would be "\001\001\001\001"
  795. X * If you don't know what this means, leave it alone.
  796. X */
  797. X/* #define MSG_SEPARATOR "From " */
  798. X
  799. X/* The maximum number of hostnames YOUR host may have (usually found in
  800. X * /etc/hosts for BSD systems).  System-V/xenix doesn't use this (use 1).
  801. X */
  802. X#define MAX_HOST_NAMES  1
  803. X
  804. X#define LS_COMMAND    "ls"
  805. X#define FORTUNE        "/usr/games/fortune"
  806. X#define LPR        "lpr"
  807. X#define SIGNATURE    ".signature"
  808. X#define MAILDIR        "/usr/spool/mail"
  809. X
  810. X/* default settings for some variable strings */
  811. X#define DEF_PROMPT    "Msg %m of %t: "
  812. X#define DEF_PAGER    "more" /* set to "internal" to use internal pager */
  813. X#define DEF_SHELL    "csh"
  814. X#define DEF_EDITOR    "vi"
  815. X#define DEF_FOLDER    "~/Mail"        /* default Mail folder */
  816. X#define DEF_MBOX    "~/mbox"    /* default mbox */
  817. X#define DEF_INDENT_STR    "> "        /* indent included mail */
  818. X#define DEF_PRINTER    "lp"
  819. X#define DEF_ESCAPE    "~"
  820. X#define DEF_HDR_FMT    "%25f %7d (%l/%c) \"%s\"" /* default hdr_format */
  821. END_OF_FILE
  822. if test 2000 -ne `wc -c <'config.h-dist'`; then
  823.     echo shar: \"'config.h-dist'\" unpacked with wrong size!
  824. fi
  825. # end of 'config.h-dist'
  826. fi
  827. if test -f 'cycle.pr' -a "${1}" != "-c" ; then 
  828.   echo shar: Will not clobber existing file \"'cycle.pr'\"
  829. else
  830. echo shar: Extracting \"'cycle.pr'\" \(241 characters\)
  831. sed "s/^X//" >'cycle.pr' <<'END_OF_FILE'
  832. X/* "@(#)cycle.pr    2.2    9/3/86 (Dan Heller)"; */
  833. X
  834. X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
  835. X */
  836. X    0x07C0,0x0FE0,0x1834,0x301C,0x601C,0x203C,0x0000,0x0000,
  837. X    0x7808,0x700C,0x7018,0x5830,0x0FE0,0x07C0,0x0000,0x0000
  838. X
  839. END_OF_FILE
  840. if test 241 -ne `wc -c <'cycle.pr'`; then
  841.     echo shar: \"'cycle.pr'\" unpacked with wrong size!
  842. fi
  843. # end of 'cycle.pr'
  844. fi
  845. if test -f 'dn.arrow.pr' -a "${1}" != "-c" ; then 
  846.   echo shar: Will not clobber existing file \"'dn.arrow.pr'\"
  847. else
  848. echo shar: Extracting \"'dn.arrow.pr'\" \(243 characters\)
  849. sed "s/^X//" >'dn.arrow.pr' <<'END_OF_FILE'
  850. X/* "@(#)dn.arrow.pr    2.2    9/3/86 (Dan Heller)"; */
  851. X
  852. X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
  853. X */
  854. X    0xFFFF,0x8001,0xBFFD,0xBFFD,0xBFFD,0x9FF9,0x8FF1,0x87E1,
  855. X    0x83C1,0x8181,0xB825,0xA435,0xA42D,0xB825,0x8001,0xFFFF
  856. END_OF_FILE
  857. if test 243 -ne `wc -c <'dn.arrow.pr'`; then
  858.     echo shar: \"'dn.arrow.pr'\" unpacked with wrong size!
  859. fi
  860. # end of 'dn.arrow.pr'
  861. fi
  862. if test -f 'edit_menu.c' -a "${1}" != "-c" ; then 
  863.   echo shar: Will not clobber existing file \"'edit_menu.c'\"
  864. else
  865. echo shar: Extracting \"'edit_menu.c'\" \(3334 characters\)
  866. sed "s/^X//" >'edit_menu.c' <<'END_OF_FILE'
  867. X/* @(#)edit_menu.c    (c) copyright    10/18/86 (Dan Heller) */
  868. X
  869. X/* edit_menu.c
  870. X * 
  871. X * Routine which handles the menu you get when in the msg_win while editing
  872. X * a letter.  This is just a fancy front end for ~ commands (nyuk, nyuk).
  873. X */
  874. X#include "mush.h"
  875. X
  876. X#define EDIT_IT         (char *)'e'
  877. X#define PAGE         (char *)'p'
  878. X#define INC          (char *)'i'
  879. X#define INC_HDR        (char *)'H'
  880. X#define FWD_MSG        (char *)'f'
  881. X#define TO_LIST        (char *)'t'
  882. X#define SUBJECT        (char *)'s'
  883. X#define CC_LIST        (char *)'c'
  884. X#define BC_LIST        (char *)'b'
  885. X#define ALL_HDR        (char *)'h'
  886. X#define SIGN_IT        (char *)'S'
  887. X#define NO_SIGN        (char *)'n'
  888. X#define FORT        (char *)'F'
  889. X#define NO_FORT        (char *)'N'
  890. X#define ERASE       (char *)'E'
  891. X#define SEND           (char *)'X'
  892. X#define ABORT       (char *)'q'
  893. X#define MENU_HELP    (char *)'?'
  894. X
  895. static struct menuitem edit_items[] = {
  896. X    { MENU_IMAGESTRING,  "Enter Editor",    EDIT_IT  },
  897. X    { MENU_IMAGESTRING,  "Send Letter",        SEND     },
  898. X    { MENU_IMAGESTRING,  "Abort Letter",    ABORT    },
  899. X    { MENU_IMAGESTRING,  "Review Letter",    PAGE     },
  900. X    { MENU_IMAGESTRING,  "Include Message",    INC      },
  901. X    { MENU_IMAGESTRING,  "Inc. msg w/hdr",    INC_HDR  },
  902. X    { MENU_IMAGESTRING,  "Forward message",    FWD_MSG  },
  903. X    { MENU_IMAGESTRING,  "Change To line",    TO_LIST  },
  904. X    { MENU_IMAGESTRING,  "Change Subject",    SUBJECT  },
  905. X    { MENU_IMAGESTRING,  "Change Cc list",    CC_LIST  },
  906. X    { MENU_IMAGESTRING,  "Change Bcc list",    BC_LIST  },
  907. X    { MENU_IMAGESTRING,  "Change All hdrs",    ALL_HDR  },
  908. X    { MENU_IMAGESTRING,  "Add .signature",    SIGN_IT  },
  909. X    { MENU_IMAGESTRING,  "No .signature",    NO_SIGN  },
  910. X    { MENU_IMAGESTRING,  "Add a fortune",    FORT     },
  911. X    { MENU_IMAGESTRING,  "No fortune",        NO_FORT  },
  912. X    { MENU_IMAGESTRING,  "Erase Message",    ERASE    },
  913. X    { MENU_IMAGESTRING,  "Help",        MENU_HELP  }
  914. X};
  915. X
  916. static struct menu menu = {
  917. X    MENU_IMAGESTRING, "Editing options",
  918. X    sizeof (edit_items) / sizeof (struct menuitem), edit_items,
  919. X    (struct menu *)NULL,
  920. X    NULL
  921. X};
  922. X
  923. edit_menu(event, fd)
  924. struct inputevent *event;
  925. X{
  926. X    static char buf[5];
  927. X    struct menuitem *m_item;
  928. X    register char *action, *p = buf+1;
  929. X    struct menu *menu_ptr = &menu;
  930. X
  931. X    if (!(m_item = menu_display(&menu_ptr, event, fd)) || get_hdr_field) {
  932. X    if (get_hdr_field)
  933. X        print("Finish the message header first.");
  934. X    return;
  935. X    }
  936. X    action = m_item->mi_data;
  937. X    if (txt.x > 5)
  938. X    add_to_letter(rite('\n'));  /* flush line for him */
  939. X
  940. X    if (!msg_cnt && (action == INC || action == INC_HDR || action == FWD_MSG)) {
  941. X    print("No messages to include");
  942. X    return;
  943. X    }
  944. X    buf[0] = *escape;
  945. X    switch(action) {
  946. X    case EDIT_IT  : (void) strcpy(p, "v");
  947. X    when PAGE     : (void) strcpy(p, "p");
  948. X    when INC      : (void) strcpy(p, "i");
  949. X    when INC_HDR  : (void) strcpy(p, "H");
  950. X    when ALL_HDR  : (void) strcpy(p, "h");
  951. X    when SUBJECT  : (void) strcpy(p, "s");
  952. X    when TO_LIST  : (void) strcpy(p, "t");
  953. X    when CC_LIST  : (void) strcpy(p, "c");
  954. X    when BC_LIST  : (void) strcpy(p, "b");
  955. X    when FWD_MSG  : (void) strcpy(p, "f");
  956. X    when SIGN_IT  : (void) strcpy(p, "S");
  957. X    when NO_SIGN  : (void) strcpy(p, "S!");
  958. X    when FORT     : (void) strcpy(p, "F");
  959. X    when NO_FORT  : (void) strcpy(p, "F!");
  960. X    when ERASE    : (void) strcpy(p, "E");
  961. X    when ABORT    : (void) strcpy(p, "q");
  962. X    when SEND     : finish_up_letter(); return;
  963. X    otherwise     : (void) strcpy(p, "?");
  964. X    }
  965. X    add_to_letter(buf);
  966. X}
  967. END_OF_FILE
  968. if test 3334 -ne `wc -c <'edit_menu.c'`; then
  969.     echo shar: \"'edit_menu.c'\" unpacked with wrong size!
  970. fi
  971. # end of 'edit_menu.c'
  972. fi
  973. if test -f 'envelope.pr' -a "${1}" != "-c" ; then 
  974.   echo shar: Will not clobber existing file \"'envelope.pr'\"
  975. else
  976. echo shar: Extracting \"'envelope.pr'\" \(247 characters\)
  977. sed "s/^X//" >'envelope.pr' <<'END_OF_FILE'
  978. X/* "@(#)envelope.cursor    2.2    9/3/86 (Dan Heller)"; */
  979. X
  980. X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
  981. X */
  982. X    0x0000,0x0000,0xFFFF,0xC003,0xA005,0x9009,0x8811,0x8421,
  983. X    0x8241,0x8181,0x8001,0x8001,0x8001,0xFFFF,0x0000,0x0000
  984. END_OF_FILE
  985. if test 247 -ne `wc -c <'envelope.pr'`; then
  986.     echo shar: \"'envelope.pr'\" unpacked with wrong size!
  987. fi
  988. # end of 'envelope.pr'
  989. fi
  990. if test -f 'glasses.pr' -a "${1}" != "-c" ; then 
  991.   echo shar: Will not clobber existing file \"'glasses.pr'\"
  992. else
  993. echo shar: Extracting \"'glasses.pr'\" \(246 characters\)
  994. sed "s/^X//" >'glasses.pr' <<'END_OF_FILE'
  995. X/* "@(#)glasses.cursor    2.2    9/3/86 (Dan Heller)"; */
  996. X
  997. X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
  998. X */
  999. X    0x0000,0x0000,0x0C06,0x1209,0x1209,0x2211,0x2010,0x4020,
  1000. X    0x4020,0x8C40,0xF3C0,0x8C40,0x8C40,0x8C40,0x7380,0x0000
  1001. END_OF_FILE
  1002. if test 246 -ne `wc -c <'glasses.pr'`; then
  1003.     echo shar: \"'glasses.pr'\" unpacked with wrong size!
  1004. fi
  1005. # end of 'glasses.pr'
  1006. fi
  1007. if test -f 'mail.icon.1' -a "${1}" != "-c" ; then 
  1008.   echo shar: Will not clobber existing file \"'mail.icon.1'\"
  1009. else
  1010. echo shar: Extracting \"'mail.icon.1'\" \(1933 characters\)
  1011. sed "s/^X//" >'mail.icon.1' <<'END_OF_FILE'
  1012. X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
  1013. X */
  1014. X    0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
  1015. X    0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
  1016. X    0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
  1017. X    0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
  1018. X    0x8000,0x0000,0x0000,0x0001,0x8000,0x1FFF,0xFFFF,0xFE01,
  1019. X    0x8000,0xFE00,0x0000,0x0181,0x8007,0x01C0,0x0000,0x0061,
  1020. X    0x8018,0x0030,0x0000,0x0011,0x8020,0x7008,0x0000,0x0011,
  1021. X    0x80C1,0xFC06,0x0000,0x0009,0x8101,0xFC01,0x0000,0x0009,
  1022. X    0x8103,0xFE01,0x0000,0x0005,0x8203,0xFE00,0x8000,0x0005,
  1023. X    0x8403,0xFE00,0x4000,0x0005,0x8401,0xFC00,0x4000,0x0005,
  1024. X    0x8801,0xFC00,0x2000,0x0005,0x8800,0x7000,0x2000,0x0005,
  1025. X    0x8800,0x0000,0x3000,0x0005,0x9000,0x0000,0x1000,0x0005,
  1026. X    0x9000,0x0000,0x1000,0x0005,0x93FF,0xFFFF,0x9000,0x0025,
  1027. X    0xA200,0x0000,0x9000,0x00E5,0xA200,0x0000,0x9000,0x03A5,
  1028. X    0xA200,0x0000,0x9000,0x0625,0xA3FF,0xFFFF,0x9000,0x1C25,
  1029. X    0xA000,0x0000,0x1000,0x3425,0xA000,0x0000,0x1000,0xC425,
  1030. X    0xA000,0x0000,0x1003,0x8425,0xA000,0x0000,0x1006,0x0425,
  1031. X    0xA000,0x0000,0x101C,0x0425,0xA000,0x0000,0x11F0,0x0425,
  1032. X    0xA000,0x0000,0x13E0,0x0445,0xA000,0x0000,0x13E0,0x0585,
  1033. X    0xA000,0x0000,0x13E0,0x0605,0xA000,0x0000,0x11C0,0x0405,
  1034. X    0xA000,0x0000,0x1000,0x000D,0xA000,0x0000,0x1000,0x0011,
  1035. X    0xA000,0x0000,0x1000,0x0021,0xA000,0x0000,0x1000,0x00C1,
  1036. X    0xA000,0x0000,0x1000,0x0101,0xA000,0x0000,0x1000,0x0601,
  1037. X    0xA000,0x0000,0x1000,0x0801,0xA000,0x0000,0x1000,0x3801,
  1038. X    0xA000,0x0000,0x1000,0x4801,0xA000,0x0000,0x1000,0x8801,
  1039. X    0xA000,0x0000,0x1003,0x0801,0xA000,0x0000,0x1004,0x0801,
  1040. X    0xA000,0x0000,0x101C,0x0801,0xA000,0x0000,0x1024,0x0801,
  1041. X    0xA000,0x0000,0x1044,0x0801,0xA000,0x0000,0x1184,0x0801,
  1042. X    0xA000,0x0000,0x1204,0x0801,0xA000,0x0000,0x1404,0x0801,
  1043. X    0xBFFF,0xFFFF,0xF804,0x0801,0x8000,0x0000,0x0004,0x0801,
  1044. X    0x8000,0x0000,0x0004,0x0801,0x8000,0x0000,0x0004,0x0801,
  1045. X    0x8000,0x0000,0x0004,0x0801,0xFFFF,0xFFFF,0xFFFF,0xFFFF
  1046. END_OF_FILE
  1047. if test 1933 -ne `wc -c <'mail.icon.1'`; then
  1048.     echo shar: \"'mail.icon.1'\" unpacked with wrong size!
  1049. fi
  1050. # end of 'mail.icon.1'
  1051. fi
  1052. if test -f 'mail.icon.2' -a "${1}" != "-c" ; then 
  1053.   echo shar: Will not clobber existing file \"'mail.icon.2'\"
  1054. else
  1055. echo shar: Extracting \"'mail.icon.2'\" \(1933 characters\)
  1056. sed "s/^X//" >'mail.icon.2' <<'END_OF_FILE'
  1057. X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
  1058. X */
  1059. X    0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
  1060. X    0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x00E0,0x0001,
  1061. X    0x8000,0x0000,0x00DE,0x0001,0x8000,0x0000,0x00C1,0xE001,
  1062. X    0x8000,0x0000,0x00C0,0x1801,0x8000,0x0000,0x00C0,0x0801,
  1063. X    0x8000,0x0000,0x00C0,0x0801,0x8000,0x1FFF,0xFFC0,0x0E01,
  1064. X    0x8000,0xFE00,0x00C0,0x0981,0x8007,0x01C0,0x00C0,0x0861,
  1065. X    0x8018,0x0030,0x00C0,0x0811,0x8020,0x7008,0x00C0,0x0811,
  1066. X    0x80C1,0xFC06,0x00C0,0x1809,0x8101,0xBC01,0x00C0,0x6009,
  1067. X    0x8103,0x1E01,0x00C1,0x8005,0x8202,0x0E00,0x80C6,0x0005,
  1068. X    0x8404,0x0400,0x40D8,0x0005,0x8408,0x0200,0x40E0,0x0005,
  1069. X    0x8810,0x0100,0x20C0,0x0005,0x8820,0x6080,0x20C0,0x0005,
  1070. X    0x8840,0x4040,0x30C0,0x0005,0x9081,0x3020,0x10C0,0x0005,
  1071. X    0x9041,0x9C10,0x10C0,0x0005,0x93E0,0x8A0F,0x90C0,0x0005,
  1072. X    0xA210,0x6404,0x90C0,0x0005,0xA208,0x3002,0x90C0,0x0005,
  1073. X    0xA204,0x1401,0x90C0,0x0005,0xA3FF,0xFFFF,0x90C0,0x0005,
  1074. X    0xA000,0x0000,0x10C0,0x0005,0xA000,0x0000,0x10C0,0x0005,
  1075. X    0xA000,0x0000,0x10C0,0x0005,0xA000,0x0000,0x10C0,0x0005,
  1076. X    0xA000,0x0000,0x10C0,0x0005,0xA000,0x0000,0x11C0,0x0005,
  1077. X    0xA000,0x0000,0x13E0,0x0005,0xA000,0x0000,0x13E0,0x0005,
  1078. X    0xA000,0x0000,0x13E0,0x0005,0xA000,0x0000,0x11C0,0x0005,
  1079. X    0xA000,0x0000,0x1000,0x000D,0xA000,0x0000,0x1000,0x0011,
  1080. X    0xA000,0x0000,0x1000,0x0021,0xA000,0x0000,0x1000,0x00C1,
  1081. X    0xA000,0x0000,0x1000,0x0101,0xA000,0x0000,0x1000,0x0601,
  1082. X    0xA000,0x0000,0x1000,0x0801,0xA000,0x0000,0x1000,0x3001,
  1083. X    0xA000,0x0000,0x1000,0x4001,0xA000,0x0000,0x1000,0x8001,
  1084. X    0xA000,0x0000,0x1003,0x8001,0xA000,0x0000,0x1004,0x8001,
  1085. X    0xA000,0x0000,0x1018,0x8001,0xA000,0x0000,0x1020,0x8001,
  1086. X    0xA000,0x0000,0x1060,0x8001,0xA000,0x0000,0x1180,0x8001,
  1087. X    0xA000,0x0000,0x1280,0x8001,0xA000,0x0000,0x1480,0x8001,
  1088. X    0xBFFF,0xFFFF,0xFC80,0x8001,0x8000,0x0000,0x0080,0x8001,
  1089. X    0x8000,0x0000,0x0080,0x8001,0x8000,0x0000,0x0080,0x8001,
  1090. X    0x8000,0x0000,0x0080,0x8001,0xFFFF,0xFFFF,0xFFFF,0xFFFF
  1091. END_OF_FILE
  1092. if test 1933 -ne `wc -c <'mail.icon.2'`; then
  1093.     echo shar: \"'mail.icon.2'\" unpacked with wrong size!
  1094. fi
  1095. # end of 'mail.icon.2'
  1096. fi
  1097. if test -f 'makefile.bsd' -a "${1}" != "-c" ; then 
  1098.   echo shar: Will not clobber existing file \"'makefile.bsd'\"
  1099. else
  1100. echo shar: Extracting \"'makefile.bsd'\" \(1129 characters\)
  1101. sed "s/^X//" >'makefile.bsd' <<'END_OF_FILE'
  1102. X# makefile.bsd    (c) copyright 1986    (Dan Heller)
  1103. X#
  1104. HDRS= mush.h config.h-dist strings.h bindings.h
  1105. SRCS= main.c init.c misc.c mail.c hdrs.c execute.c commands.c print.c dates.c \
  1106. X      signals.c aliases.c setopts.c msgs.c pick.c sort.c expr.c folders.c \
  1107. X      loop.c help.c viewopts.c curses.c curs_io.c bind.c file.c strings.c
  1108. OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
  1109. X      signals.o aliases.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
  1110. X      folders.o dates.o loop.o help.o viewopts.o curses.o curs_io.o bind.o
  1111. HELP_FILES= README-6.0 README cmd_help mush.1
  1112. MAKES= makefile.bsd makefile.x286 makefile.x386 makefile.sys.v
  1113. X
  1114. CFLAGS= -O -DCURSES -DBSD
  1115. LDFLAGS= -s
  1116. LINTFLAGS= -bxah -Dlint -DCURSES -DBSD
  1117. LIBES= -lcurses -ltermlib
  1118. X
  1119. mush: $(OBJS)
  1120. X    @echo loading...
  1121. X    @cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
  1122. X
  1123. tape:
  1124. X    @tar fcv /dev/rst0 $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
  1125. X
  1126. tar:
  1127. X    @tar fcv MUSH $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
  1128. X
  1129. tarmail:
  1130. X    tar fcv - $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES) | \
  1131. X    compress | btoa > mush.tarmail
  1132. X
  1133. lint:
  1134. X    lint $(LINTFLAGS) $(SRCS)
  1135. X
  1136. clean:
  1137. X    rm -f *.o core mush
  1138. END_OF_FILE
  1139. if test 1129 -ne `wc -c <'makefile.bsd'`; then
  1140.     echo shar: \"'makefile.bsd'\" unpacked with wrong size!
  1141. fi
  1142. # end of 'makefile.bsd'
  1143. fi
  1144. if test -f 'makefile.sun' -a "${1}" != "-c" ; then 
  1145.   echo shar: Will not clobber existing file \"'makefile.sun'\"
  1146. else
  1147. echo shar: Extracting \"'makefile.sun'\" \(1365 characters\)
  1148. sed "s/^X//" >'makefile.sun' <<'END_OF_FILE'
  1149. X# makefile.sun    (c) copyright 1986    (Dan Heller)
  1150. X#
  1151. HDRS= mush.h config.h-dist strings.h bindings.h
  1152. X
  1153. SRCS= main.c init.c misc.c mail.c hdrs.c execute.c commands.c rite.c \
  1154. X      select.c doproc.c print.c signals.c aliases.c setopts.c msgs.c \
  1155. X      hdr_procs.c tool.c hdr_panel.c main_panel.c help.c viewopts.c sort.c \
  1156. X      pick.c fkeys.c expr.c folders.c dates.c loop.c edit_menu.c \
  1157. X      curses.c curs_io.c bind.c file.c strings.c
  1158. X
  1159. OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o rite.o \
  1160. X      select.o doproc.o print.o signals.o aliases.o setopts.o msgs.o \
  1161. X      hdr_procs.o tool.o hdr_panel.o main_panel.o help.o viewopts.o sort.o \
  1162. X      pick.o fkeys.o expr.o folders.o dates.o loop.o edit_menu.o \
  1163. X      curses.o curs_io.o bind.o file.o strings.o
  1164. X
  1165. IMAGES= mail.icon.1 mail.icon.2 check.pr cycle.pr envelope.pr glasses.pr \
  1166. X    write.pr up.arrow.pr dn.arrow.pr coffee.cup.pr
  1167. X
  1168. HELP_FILES= README-6.0 README cmd_help tool_help mush.1
  1169. X
  1170. MAKES= makefile.sun makefile.bsd makefile.sys.v makefile.x286 makefile.x386
  1171. X
  1172. CFLAGS= -O -DSUNTOOL -DCURSES -DBSD
  1173. LDFLAGS= -s
  1174. LIBES= -lcurses -ltermlib -lsuntool -lsunwindow -lpixrect
  1175. LINTFLAGS= -bxah -Dlint
  1176. X
  1177. mush: $(OBJS)
  1178. X    @echo loading...
  1179. X    @cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
  1180. X
  1181. tar:
  1182. X    @tar fcv MUSH $(HELP_FILES) $(MAKES) $(IMAGES) $(HDRS) $(SRCS)
  1183. X
  1184. lint:
  1185. X    make -f makefile.bsd lint
  1186. X
  1187. clean:
  1188. X    rm -f *.o core mush
  1189. END_OF_FILE
  1190. if test 1365 -ne `wc -c <'makefile.sun'`; then
  1191.     echo shar: \"'makefile.sun'\" unpacked with wrong size!
  1192. fi
  1193. # end of 'makefile.sun'
  1194. fi
  1195. if test -f 'makefile.sys.v' -a "${1}" != "-c" ; then 
  1196.   echo shar: Will not clobber existing file \"'makefile.sys.v'\"
  1197. else
  1198. echo shar: Extracting \"'makefile.sys.v'\" \(929 characters\)
  1199. sed "s/^X//" >'makefile.sys.v' <<'END_OF_FILE'
  1200. HDRS1= mush.h config.h
  1201. HDRS2= strings.h
  1202. HDRS3= bindings.h
  1203. SRCS1= aliases.c commands.c dates.c execute.c expr.c folders.c \
  1204. X        hdrs.c init.c loop.c mail.c main.c misc.c msgs.c pick.c \
  1205. X        print.c setopts.c signals.c sort.c viewopts.c
  1206. SRCS2= bind.c curs_io.c curses.c help.c file.c strings.c
  1207. X
  1208. OBJS1= aliases.o commands.o dates.o execute.o expr.o folders.o \
  1209. X        hdrs.o init.o loop.o mail.o main.o misc.o msgs.o pick.o \
  1210. X        print.o setopts.o signals.o sort.o viewopts.o
  1211. OBJS2= bind.o curs_io.o curses.o help.o file.o strings.o
  1212. X
  1213. X# Sun OS systems who wish to compile with sys-v options:
  1214. X# CC= /usr/5bin/cc
  1215. X# CFLAGS=     -O -DSYSV -DCURSES -DUSG
  1216. X# LIBS= -L/usr/5lib -lcurses
  1217. CFLAGS=     -O -DSYSV -DCURSES -DREGCMP -DUSG
  1218. LDFLAGS=     -s
  1219. LIBS=         -lcurses
  1220. PROG=        mush
  1221. X
  1222. X$(PROG): $(OBJS1) $(OBJS2)
  1223. X    @echo loading...
  1224. X    @cc $(LDFLAGS) $(OBJS1) $(OBJS2) -o $(PROG) $(LIBS)
  1225. X
  1226. X$(OBJS1): $(HDRS1) $(HDRS2)
  1227. X$(OBJS2): $(HDRS1) $(HDRS2) $(HDRS3)
  1228. help.o: strings.h
  1229. END_OF_FILE
  1230. if test 929 -ne `wc -c <'makefile.sys.v'`; then
  1231.     echo shar: \"'makefile.sys.v'\" unpacked with wrong size!
  1232. fi
  1233. # end of 'makefile.sys.v'
  1234. fi
  1235. if test -f 'makefile.x286' -a "${1}" != "-c" ; then 
  1236.   echo shar: Will not clobber existing file \"'makefile.x286'\"
  1237. else
  1238. echo shar: Extracting \"'makefile.x286'\" \(1296 characters\)
  1239. sed "s/^X//" >'makefile.x286' <<'END_OF_FILE'
  1240. HDRS= mush.h config.h-dist strings.h bindings.h
  1241. SRCS1= main.c init.c misc.c execute.c
  1242. SRCS2= signals.c aliases.c msgs.c pick.c viewopts.c
  1243. SRCS3= sort.c expr.c folders.c dates.c help.c
  1244. SRCS4= loop.c bind.c
  1245. SRCS5= commands.c setopts.c hdrs.c
  1246. SRCS6= mail.c print.c 
  1247. SRCS7= curses.c curs_io.c
  1248. SRCS8= file.c strings.c
  1249. OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
  1250. X      signals.o aliases.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
  1251. X      folders.o dates.o loop.o help.o viewopts.o bind.o curses.o curs_io.o
  1252. DOCS= README cmd_help mush.1
  1253. MAKES= makefile.sys.v makefile.xenix makefile.bsd
  1254. X
  1255. CFLAGS= -O -DSYSV -Mle -DCURSES -DREGCMP -DUSG
  1256. LDFLAGS= -X -Mle -lx -F 4000
  1257. LIBES= -lcurses -ltermlib
  1258. X
  1259. mush: $(OBJS)
  1260. X    @echo loading...
  1261. X    @cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
  1262. X
  1263. misc.o:    misc.c
  1264. X    cc $(CFLAGS) -LARGE -c misc.c
  1265. X
  1266. bind.o:    bind.c
  1267. X    cc $(CFLAGS) -LARGE -c bind.c
  1268. X
  1269. shar:
  1270. X    shar ${DOCS} ${MAKES} ${HDRS}>hdr.shr
  1271. X    shar ${SRCS1} > src1.shr
  1272. X    shar ${SRCS2} > src2.shr
  1273. X    shar ${SRCS3} > src3.shr
  1274. X    shar ${SRCS4} > src4.shr
  1275. X    shar ${SRCS5} > src5.shr
  1276. X    shar ${SRCS6} > src6.shr
  1277. X    shar ${SRCS7} > src7.shr
  1278. X    shar ${SRCS8} > src8.shr
  1279. X
  1280. tar:
  1281. X    tar fcv MUSH ${MAKES} ${HDRS} ${DOCS} ${SRCS1} \
  1282. X    ${SRCS2} ${SRCS3} ${SRCS4} ${SRCS5} ${SRCS6} ${SRCS7} ${SRCS}8
  1283. X
  1284. clean:
  1285. X    rm -f *.o core mush
  1286. END_OF_FILE
  1287. if test 1296 -ne `wc -c <'makefile.x286'`; then
  1288.     echo shar: \"'makefile.x286'\" unpacked with wrong size!
  1289. fi
  1290. # end of 'makefile.x286'
  1291. fi
  1292. if test -f 'makefile.x386' -a "${1}" != "-c" ; then 
  1293.   echo shar: Will not clobber existing file \"'makefile.x386'\"
  1294. else
  1295. echo shar: Extracting \"'makefile.x386'\" \(1240 characters\)
  1296. sed "s/^X//" >'makefile.x386' <<'END_OF_FILE'
  1297. HDRS= mush.h config.h-dist strings.h bindings.h
  1298. SRCS1= main.c init.c misc.c execute.c
  1299. SRCS2= signals.c aliases.c msgs.c pick.c viewopts.c
  1300. SRCS3= sort.c expr.c folders.c dates.c help.c
  1301. SRCS4= loop.c bind.c
  1302. SRCS5= commands.c setopts.c hdrs.c
  1303. SRCS6= mail.c print.c
  1304. SRCS7= curses.c curs_io.c
  1305. SRCS8= file.c strings.c
  1306. OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
  1307. X      signals.o aliases.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
  1308. X      folders.o dates.o loop.o help.o viewopts.o bind.o curses.o curs_io.o
  1309. DOCS= README cmd_help mush.1
  1310. MAKES= makefile.sys.v makefile.xenix makefile.bsd
  1311. X
  1312. CFLAGS= -O -DSYSV -M3e -DCURSES -DREGCMP -DUSG 
  1313. LDFLAGS= -X -M3 -lx
  1314. LIBES= -lcurses -ltermlib
  1315. X
  1316. mush: $(OBJS)
  1317. X    @echo loading...
  1318. X    @cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
  1319. X
  1320. bind.o:    bind.c
  1321. X    cc $(CFLAGS) -LARGE -c bind.c
  1322. X
  1323. shar:
  1324. X    shar ${DOCS} ${MAKES} ${HDRS}>hdr.shr
  1325. X    shar ${SRCS1} > src1.shr
  1326. X    shar ${SRCS2} > src2.shr
  1327. X    shar ${SRCS3} > src3.shr
  1328. X    shar ${SRCS4} > src4.shr
  1329. X    shar ${SRCS5} > src5.shr
  1330. X    shar ${SRCS6} > src6.shr
  1331. X    shar ${SRCS7} > src7.shr
  1332. X    shar ${SRCS8} > src8.shr
  1333. X
  1334. tar:
  1335. X    tar fcv MUSH ${MAKES} ${HDRS} ${DOCS} ${SRCS1} \
  1336. X    ${SRCS2} ${SRCS3} ${SRCS4} ${SRCS5} ${SRCS6} ${SRCS7} ${SRCS8}
  1337. X
  1338. clean:
  1339. X    rm -f *.o core mush
  1340. END_OF_FILE
  1341. if test 1240 -ne `wc -c <'makefile.x386'`; then
  1342.     echo shar: \"'makefile.x386'\" unpacked with wrong size!
  1343. fi
  1344. # end of 'makefile.x386'
  1345. fi
  1346. if test -f 'strings.h' -a "${1}" != "-c" ; then 
  1347.   echo shar: Will not clobber existing file \"'strings.h'\"
  1348. else
  1349. echo shar: Extracting \"'strings.h'\" \(473 characters\)
  1350. sed "s/^X//" >'strings.h' <<'END_OF_FILE'
  1351. X/* @(#)strings.h    (c) copyright 9/3/86 (Dan Heller) */
  1352. X
  1353. X/* External function definitions for routines described in string(3).  */
  1354. char    *strcat(), *strncat(), *strcpy(), *strncpy();
  1355. int    strcmp(), strncmp(), strlen();
  1356. X
  1357. X#ifdef SYSV
  1358. X#define sprintf Sprintf
  1359. X#define    index    strchr
  1360. X#define    rindex    strrchr
  1361. X#endif /* SYSV */
  1362. X
  1363. char 
  1364. X    *sprintf(),        /* Sprintf for sysv -- see end of misc.c */
  1365. X    *any(),         /* return first char in str2 that exists in str1 */
  1366. X    *index(), *rindex();
  1367. END_OF_FILE
  1368. if test 473 -ne `wc -c <'strings.h'`; then
  1369.     echo shar: \"'strings.h'\" unpacked with wrong size!
  1370. fi
  1371. # end of 'strings.h'
  1372. fi
  1373. if test -f 'up.arrow.pr' -a "${1}" != "-c" ; then 
  1374.   echo shar: Will not clobber existing file \"'up.arrow.pr'\"
  1375. else
  1376. echo shar: Extracting \"'up.arrow.pr'\" \(243 characters\)
  1377. sed "s/^X//" >'up.arrow.pr' <<'END_OF_FILE'
  1378. X/* "@(#)up.arrow.pr    2.2    9/3/86 (Dan Heller)"; */
  1379. X
  1380. X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
  1381. X */
  1382. X    0xFFFF,0x8001,0xA439,0xA425,0xA439,0x9821,0x8181,0x83C1,
  1383. X    0x87E1,0x8FF1,0x9FF9,0xBFFD,0xBFFD,0xBFFD,0x8001,0xFFFF
  1384. END_OF_FILE
  1385. if test 243 -ne `wc -c <'up.arrow.pr'`; then
  1386.     echo shar: \"'up.arrow.pr'\" unpacked with wrong size!
  1387. fi
  1388. # end of 'up.arrow.pr'
  1389. fi
  1390. if test -f 'write.pr' -a "${1}" != "-c" ; then 
  1391.   echo shar: Will not clobber existing file \"'write.pr'\"
  1392. else
  1393. echo shar: Extracting \"'write.pr'\" \(244 characters\)
  1394. sed "s/^X//" >'write.pr' <<'END_OF_FILE'
  1395. X/* "@(#)write.cursor    2.2    9/3/86 (Dan Heller)"; */
  1396. X
  1397. X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
  1398. X */
  1399. X    0x0018,0x002C,0x0056,0x00A4,0x0148,0x0290,0x0520,0x0A40,
  1400. X    0x1080,0x2100,0x4200,0xE400,0xE800,0xF000,0xE000,0x0000
  1401. END_OF_FILE
  1402. if test 244 -ne `wc -c <'write.pr'`; then
  1403.     echo shar: \"'write.pr'\" unpacked with wrong size!
  1404. fi
  1405. # end of 'write.pr'
  1406. fi
  1407. echo shar: End of archive 1 \(of 14\).
  1408. cp /dev/null ark1isdone
  1409. MISSING=""
  1410. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
  1411.     if test ! -f ark${I}isdone ; then
  1412.     MISSING="${MISSING} ${I}"
  1413.     fi
  1414. done
  1415. if test "${MISSING}" = "" ; then
  1416.     echo You have unpacked all 14 archives.
  1417.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1418. else
  1419.     echo You still need to unpack the following archives:
  1420.     echo "        " ${MISSING}
  1421. fi
  1422. ##  End of shell archive.
  1423. exit 0
  1424.